/*
 *
 *    Copyright (c) 2022 Project CHIP Authors
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

// THIS FILE IS GENERATED BY ZAP
// This file is generated from clusters-Enums-Check.h.zapt

#pragma once

#include <clusters/PowerSource/Enums.h>

namespace chip
{
namespace app
{
	namespace Clusters
	{
		static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::BatApprovedChemistryEnum val)
		{
			using EnumType = PowerSource::BatApprovedChemistryEnum;
			switch (val) {
			case EnumType::kUnspecified:
			case EnumType::kAlkaline:
			case EnumType::kLithiumCarbonFluoride:
			case EnumType::kLithiumChromiumOxide:
			case EnumType::kLithiumCopperOxide:
			case EnumType::kLithiumIronDisulfide:
			case EnumType::kLithiumManganeseDioxide:
			case EnumType::kLithiumThionylChloride:
			case EnumType::kMagnesium:
			case EnumType::kMercuryOxide:
			case EnumType::kNickelOxyhydride:
			case EnumType::kSilverOxide:
			case EnumType::kZincAir:
			case EnumType::kZincCarbon:
			case EnumType::kZincChloride:
			case EnumType::kZincManganeseDioxide:
			case EnumType::kLeadAcid:
			case EnumType::kLithiumCobaltOxide:
			case EnumType::kLithiumIon:
			case EnumType::kLithiumIonPolymer:
			case EnumType::kLithiumIronPhosphate:
			case EnumType::kLithiumSulfur:
			case EnumType::kLithiumTitanate:
			case EnumType::kNickelCadmium:
			case EnumType::kNickelHydrogen:
			case EnumType::kNickelIron:
			case EnumType::kNickelMetalHydride:
			case EnumType::kNickelZinc:
			case EnumType::kSilverZinc:
			case EnumType::kSodiumIon:
			case EnumType::kSodiumSulfur:
			case EnumType::kZincBromide:
			case EnumType::kZincCerium:
				return val;
			default:
				return EnumType::kUnknownEnumValue;
			}
		}
		static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::BatChargeFaultEnum val)
		{
			using EnumType = PowerSource::BatChargeFaultEnum;
			switch (val) {
			case EnumType::kUnspecified:
			case EnumType::kAmbientTooHot:
			case EnumType::kAmbientTooCold:
			case EnumType::kBatteryTooHot:
			case EnumType::kBatteryTooCold:
			case EnumType::kBatteryAbsent:
			case EnumType::kBatteryOverVoltage:
			case EnumType::kBatteryUnderVoltage:
			case EnumType::kChargerOverVoltage:
			case EnumType::kChargerUnderVoltage:
			case EnumType::kSafetyTimeout:
				return val;
			default:
				return EnumType::kUnknownEnumValue;
			}
		}
		static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::BatChargeLevelEnum val)
		{
			using EnumType = PowerSource::BatChargeLevelEnum;
			switch (val) {
			case EnumType::kOk:
			case EnumType::kWarning:
			case EnumType::kCritical:
				return val;
			default:
				return EnumType::kUnknownEnumValue;
			}
		}
		static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::BatChargeStateEnum val)
		{
			using EnumType = PowerSource::BatChargeStateEnum;
			switch (val) {
			case EnumType::kUnknown:
			case EnumType::kIsCharging:
			case EnumType::kIsAtFullCharge:
			case EnumType::kIsNotCharging:
				return val;
			default:
				return EnumType::kUnknownEnumValue;
			}
		}
		static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::BatCommonDesignationEnum val)
		{
			using EnumType = PowerSource::BatCommonDesignationEnum;
			switch (val) {
			case EnumType::kUnspecified:
			case EnumType::kAaa:
			case EnumType::kAa:
			case EnumType::kC:
			case EnumType::kD:
			case EnumType::k4v5:
			case EnumType::k6v0:
			case EnumType::k9v0:
			case EnumType::k12aa:
			case EnumType::kAaaa:
			case EnumType::kA:
			case EnumType::kB:
			case EnumType::kF:
			case EnumType::kN:
			case EnumType::kNo6:
			case EnumType::kSubC:
			case EnumType::kA23:
			case EnumType::kA27:
			case EnumType::kBa5800:
			case EnumType::kDuplex:
			case EnumType::k4sr44:
			case EnumType::k523:
			case EnumType::k531:
			case EnumType::k15v0:
			case EnumType::k22v5:
			case EnumType::k30v0:
			case EnumType::k45v0:
			case EnumType::k67v5:
			case EnumType::kJ:
			case EnumType::kCr123a:
			case EnumType::kCr2:
			case EnumType::k2cr5:
			case EnumType::kCrP2:
			case EnumType::kCrV3:
			case EnumType::kSr41:
			case EnumType::kSr43:
			case EnumType::kSr44:
			case EnumType::kSr45:
			case EnumType::kSr48:
			case EnumType::kSr54:
			case EnumType::kSr55:
			case EnumType::kSr57:
			case EnumType::kSr58:
			case EnumType::kSr59:
			case EnumType::kSr60:
			case EnumType::kSr63:
			case EnumType::kSr64:
			case EnumType::kSr65:
			case EnumType::kSr66:
			case EnumType::kSr67:
			case EnumType::kSr68:
			case EnumType::kSr69:
			case EnumType::kSr516:
			case EnumType::kSr731:
			case EnumType::kSr712:
			case EnumType::kLr932:
			case EnumType::kA5:
			case EnumType::kA10:
			case EnumType::kA13:
			case EnumType::kA312:
			case EnumType::kA675:
			case EnumType::kAc41e:
			case EnumType::k10180:
			case EnumType::k10280:
			case EnumType::k10440:
			case EnumType::k14250:
			case EnumType::k14430:
			case EnumType::k14500:
			case EnumType::k14650:
			case EnumType::k15270:
			case EnumType::k16340:
			case EnumType::kRcr123a:
			case EnumType::k17500:
			case EnumType::k17670:
			case EnumType::k18350:
			case EnumType::k18500:
			case EnumType::k18650:
			case EnumType::k19670:
			case EnumType::k25500:
			case EnumType::k26650:
			case EnumType::k32600:
				return val;
			default:
				return EnumType::kUnknownEnumValue;
			}
		}
		static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::BatFaultEnum val)
		{
			using EnumType = PowerSource::BatFaultEnum;
			switch (val) {
			case EnumType::kUnspecified:
			case EnumType::kOverTemp:
			case EnumType::kUnderTemp:
				return val;
			default:
				return EnumType::kUnknownEnumValue;
			}
		}
		static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::BatReplaceabilityEnum val)
		{
			using EnumType = PowerSource::BatReplaceabilityEnum;
			switch (val) {
			case EnumType::kUnspecified:
			case EnumType::kNotReplaceable:
			case EnumType::kUserReplaceable:
			case EnumType::kFactoryReplaceable:
				return val;
			default:
				return EnumType::kUnknownEnumValue;
			}
		}
		static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::PowerSourceStatusEnum val)
		{
			using EnumType = PowerSource::PowerSourceStatusEnum;
			switch (val) {
			case EnumType::kUnspecified:
			case EnumType::kActive:
			case EnumType::kStandby:
			case EnumType::kUnavailable:
				return val;
			default:
				return EnumType::kUnknownEnumValue;
			}
		}
		static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::WiredCurrentTypeEnum val)
		{
			using EnumType = PowerSource::WiredCurrentTypeEnum;
			switch (val) {
			case EnumType::kAc:
			case EnumType::kDc:
				return val;
			default:
				return EnumType::kUnknownEnumValue;
			}
		}
		static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::WiredFaultEnum val)
		{
			using EnumType = PowerSource::WiredFaultEnum;
			switch (val) {
			case EnumType::kUnspecified:
			case EnumType::kOverVoltage:
			case EnumType::kUnderVoltage:
				return val;
			default:
				return EnumType::kUnknownEnumValue;
			}
		}
	} // namespace Clusters
} // namespace app
} // namespace chip
